`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////

module leds(led_clk, ledrst, ledwrite, ledcs, ledaddr,ledwdata, ledout);

    //这个是时钟信号
    input led_clk;    
    //这个是复位信号		    
    input ledrst;
    //我如果要把数据用LED灯显示出来，那么ledwrite就是1
    input ledwrite;	
    //这个是从MemOrIO来的，用来表示我要用LED灯显示数据啦！	       
    input ledcs;

    input[1:0] ledaddr;
    //这个是我要写到LED灯的那个16位的数据
    input[15:0] ledwdata;
    //我要向板子上输出的24位的LED信号	  	
    output[23:0] ledout;		
  
    reg [23:0] ledout;
    
    //这个块是用来决定：我要LED灯显示的数据是什么
    always@(posedge led_clk or posedge ledrst) begin
        //复位
        if(ledrst) begin
            ledout <= 24'h000000;
        end

        //如果我真要用LED灯的话
		else if(ledcs && ledwrite) begin
            //如果LED的Address的最后两位为00，说明选择了后16个灯作为显示
			if(ledaddr == 2'b00)
				ledout[23:0] <= { ledout[23:16], ledwdata[15:0] };
            //如果是10，说明选择了前8个灯做显示
			else if(ledaddr == 2'b10 )
				ledout[23:0] <= { ledwdata[7:0], ledout[15:0] };
			else
				ledout <= ledout;
        end
		else begin
            ledout <= ledout;
        end
    end
endmodule
